package com.heiye.blog.ai.domain.mapper;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.heiye.blog.ai.domain.dos.ChatMessageDO;

/**
 * @author: heiye
 * @date: 2025/10/09 下午8:52
 * @version: v1.0.0
 * @description: TODO
 */
public interface ChatMessageMapper extends BaseMapper<ChatMessageDO> {

    /**
     * 分页查询
     *
     * @param current
     * @param size
     * @param chatId
     * @return
     */
    default Page<ChatMessageDO> selectPageList(Long current, Long size, String chatId) {
        // 分页对象(查询第几页、每页多少数据)
        Page<ChatMessageDO> page = new Page<>(current, size);

        // 构建查询条件
        LambdaQueryWrapper<ChatMessageDO> wrapper = Wrappers.<ChatMessageDO>lambdaQuery()
                // 对话 ID
                .eq(ChatMessageDO::getChatUuid, chatId)
                // 按创建时间倒序
                .orderByDesc(ChatMessageDO::getCreateTime);

        return selectPage(page, wrapper);
    }

    /**
     * 更新音频地址
     *
     * @param id
     * @param audioUrl
     */
    default void updateAudioUrlById(Long id, String audioUrl) {
        // 构建更新条件
        LambdaUpdateWrapper<ChatMessageDO> lambdaUpdateWrapper = Wrappers.<ChatMessageDO>lambdaUpdate()
                .set(ChatMessageDO::getAudioUrl, audioUrl)
                .eq(ChatMessageDO::getId, id);

        // 更新
        update(lambdaUpdateWrapper);
    }
}
